home *** CD-ROM | disk | FTP | other *** search
- <<< 汎用ディスクキャッシュプログラム v1.02 >>>
-
- ●能書き
-
- ディスクキャッシュとは、低速なデバイスの読み込みを別のデバイス(通常は
- 高速なメモリ)に部分的に保存し再読み込み時は,その高速なデバイスから行う
- ことで見掛け上デバイスの読み込み速度を早めることです
-
- このディスクキャッシュプログラムは、 キャッシュバッファを普通のデバイス
- に設定しそのデバイスの空きエリアをバッファとして動的に利用することが
- 出来るようになっています
-
- 例えばキャッシュバッファとなるデバイスに1MバイトRAMDISKを設定した場合は
- そのRAMDISKを使用しなければ, 1Mバイトフルにキャッシュバッファとして利用
- しその後そのRAMDISKに100Kバイトのファイルが作られれば,そのエリアのみ
- のキャッシュバッファから開放し残り900Kバイトをキャッシュバッファとして
- 動作し続けます
-
- ようするに貴重な資源のRAMを100%フルに使いきってしまおうと言う訳です・・・
-
- ●設定方法
-
- 設定は、いたって簡単でMS-DOS起動後に
-
- CACHE <バッファデバイス名> <キャッシュしたいデバイス名...>
-
- として起動すれば自動的にキャッシュが設定され常駐します(常駐サイズは約25K)
-
- 例えば I: にRAMDISKが設定され A: B: C: D: H: をキャッシュしたいなら・・
-
- CACHE I A B C D H
-
- と指定します。 (キャッシュするデバイスは最大15個まで設定できます)
-
- ●解除方法
-
- キャッシュを解除しCACHEを常駐から開放するには、 付属の CMODE.EXE プログラムを
- 用います。
-
- CMODE <バッファデバイス名> -
-
- 例えば先程の I: デバイスにキャッシュバッファが設定されていれば・・・
-
- CMODE I -
-
- と実行すれば常駐を開放します.(最後の"-"マイナスが開放の合図です!)
- 単に"CMODE I"として実行すれば現在のキャッシュバッファの状況を表示します
-
- ●注意事項!
-
- 1. キャッシュバッファおよびキャッシュしているデバイスに直接
- 書き込みやフォ-マットを行なわないでください
-
- 2. キャッシュバッファとなっているデバイスに UNDEL を行なわい
- でください
-
- 3. 他のプログラムの暴走によるキャッシュテ-ブルメモリの破壊
- には、充分に注意してください
-
- 4. キャッシュバッファデバイスにはメディア交換出来るデバイス
- (例えばフロッピ-など)を設定しないでください
-
- 以上のことをもし行うなら必ず一旦キャッシュを開放されてから
- 実行してください!!
-
- ●キャッシュシステムの構造と言い逃れ
-
- キャッシュバッファの空きエリアの検出は、そのデバイスのFATが書き込まれた
- 時に検索してデバイスとして使用されているかどうかをチェックしています.
-
- さらに空きエリアとなっているセクタに対するREAD/WRITEが行なわれた場合には
- そのエリアをデバイス使用エリアとして登録していますが,その後FATが書き込ま
- れそのエリアが未使用なら再度空きエリアとしてしています
-
- したがってMS-DOSのファイル構造に合わないファイルアクセスに対しては、まった
- く対応できないので充分に注意が必要です。
-
- 噂では、一旦ファイルを作成してからそのファイルを削除しその時に確保された
- エリアを勝手に使用すると言う極悪なプログラムがあるようですが、 そう言った
- プログラムは決してキャッシュバッファデバイス上で動作させないでください
- (見方を変えればUNDELもこの手のプログラムになってしまうなぁ・・・ごめんね)
-
- 一応、 キャッシュバッファとして使用したエリアには、チェックサムを付けて
- 管理しているのでもしその内容が直接書き込みによって破壊され場合はそのエリア
- を無効にする処置を行っていますので間違ったキャッシングが起こりにくくは
- しているつもりです・・・
-
- キャッシュプログラムがデバイスを乗っ取っている方法は、単純にDPB内のドライバ
- アドレスが保存されている場所を書き換えることで行っています
-
- したがってマシン自身には,まったく依存してませんのでMS-DOS上でさえいれば
- どんなマシンでも動くはず?です・・・
-
- ドライバ自身のリンク構造は、書き換えを行っていませんのでADDDEV/DELDEVなどを
- 行うとひょっとしてバグるかもしれません・・・?
-
- あと、このキャッシュプログラムが管理出来るバッファの容量ですが、キャッシュ
- バッファとなったデバイスのセクタ単位で最大2048セクタ分です。
-
- もしキャッシュバッファのデバイスの1セクタが1024バイトなら約2Mバイトの容量
- を管理できる計算になります。
-
- 通常キャッシュバッファデバイスをRAMDISKに設定するならこれ位で充分だと思い
- ますがもし容量を増やしたいならソ-スファイル"DEFS.H"のMAX_SECの値を変えて
- やってコンパイルしなおす必要があります。(ただしプログラム構造の制限で最大
- 5500位までしか設定できないでしょう)
-
- さらにこの値を変更した場合、 内部テ-ブルが1つあたり8バイト消費しますので
- 4096だと約32Kバイト必要になり当然常駐するメモリが増大します
-
- ●ひょっとして・・・・
-
- この手のプログラムがバグると完全にディスク構造を破壊してしまいます!
-
- もしバグによってファイルが破壊されても当方は一切責任を負いかねますので
- そのことを肝に命じて使用してください
-
- by MIYAZAKI
-
- ●修正の記録
-
- v1.01 キャッシュバッファデバイスのセクタ長より小さいセクタ長のデバイスを設定した場合の
- 演算が符号無しだったバグおよびワ-クメモリのアドレス計算を修正
-
- v1.02 メディア交換時のチェック方法を修正した